/**
 * 实现 call 函数
 * @param {Function} Fn 执行的函数
 * @param {object} obj 函数运行时，this指向的对象
 * @param {...any} args 函数运行时的参数
 * @returns 
 */

export function call(Fn, obj, ...args) {
  // 判断，如果对象为 undefined 或 null，则指向全局对象
  if (obj === undefined || obj === null) {
    obj = globalThis;                 // 全局对象
  }
  
  obj.temp = Fn;                      // 为 obj 添加临时的方法
  const result = obj.temp(...args);   //调用 temp 方法
  delete obj.temp;                    // 删除 temp 方法
  return result;                      // 返回执行结果
}